<?php

/**
 * Static content controller.
 *
 * This file will render views from views/pages/
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
App::uses('AppController', 'Controller');

/**
 * Static content controller
 *
 * Override this controller by placing a copy in controllers directory of an application
 *
 * @package       app.Controller
 * @link http://book.cakephp.org/2.0/en/controllers/pages-controller.html
 */
class PagesController extends AppController {

    /**
     * This controller does not use a model
     *
     * @var array
     */
    public $uses = array();

    /**
     * Displays a view
     *
     * @return void
     * @throws NotFoundException When the view file could not be found
     * 	or MissingViewException in debug mode.
     */
    public function display() {
        //load Models
        $this->loadModel('Company');
        $this->loadModel('Broker');
        $this->loadModel('Stock');
        $this->loadModel('StockValues');
        $this->loadModel('Opinion');
        $this->loadModel('Settings');
        $this->loadModel('Cmspages');

        $path = func_get_args();
        $count = count($path);
        if (!$count) {
            return $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));

        //get list company
        $list_companies = $this->Company->find('all', array('limit' => 8, 'conditions' => array('status' => 1), 'order' => 'RAND()'));
        $this->set('list_companies', $list_companies);

        //get list Analyst
        $list_analyst = $this->Stock->find('all', array(
            'limit' => 4,
            'order' => 'RAND()',
            'conditions' => array('Broker.status' => 1, 'Stock.status' => 1),
            'fields' => array(
                'Stock.*', 'Broker.fullname', 'Broker.id'
            ),
            'recursive' => -1,
            'joins' => array(
                array(
                    'table' => 'brokers',
                    'type' => 'left',
                    'alias' => 'Broker',
                    'conditions' => array('Stock.broker = Broker.id')
                )
            )
        ));

        foreach ($list_analyst as $bk => $stock) {

            $stock_last_value = $this->StockValues->find('all', array('limit' => 2, 'order' => array('date desc', 'updated desc'), 'conditions' => array('stock' => $stock['Stock']['id'])));
            $stock['Stock']['values'] = $stock_last_value;
            $list_analyst[$bk] = $stock;
        }
        $this->set('list_brokers', $list_analyst);

        //list Performer
        $list_performer = $this->Broker->find('all', array('limit' => 4, 'conditions' => array('status' => 1), 'order' => 'RAND()'));
        foreach ($list_performer as $pk => $performer) {
            $opinions = $this->Opinion->find('all', array('conditions' => array('broker' => $performer['Broker']['id'], 'result >' => 0)));
            $performer['Broker']['opinions'] = $opinions;
            $list_performer[$pk] = $performer;
        }
        $this->set('list_performer', $list_performer);


        $description = $this->Settings->findByKey('contact_description');
        $img = $this->Settings->findByKey('contact_img');
        $map = $this->Settings->findByKey('contact_map');
        $short_about_us = $this->Settings->findByKey('short_about_us');
        $short_contact_us = $this->Settings->findByKey('short_contact_us');
        $contact_detail = $this->Settings->findByKey('contact_detail');

        if ($description)
            $this->set('description', $description);
        if ($img)
            $this->set('img', $img);
        if ($map)
            $this->set('map', $map);
        if ($short_about_us)
            $this->set('short_about_us', $short_about_us);
        if ($short_contact_us)
            $this->set('short_contact_us', $short_contact_us);
        if ($contact_detail)
            $this->set('contact_detail', $contact_detail);


        $about_us = $this->Cmspages->findByKey('about_us');
        if ($about_us)
            $this->set('about_us', $about_us);

        try {
            $this->render(implode('/', $path));
        } catch (MissingViewException $e) {
            if (Configure::read('debug')) {
                throw $e;
            }
            throw new NotFoundException();
        }
    }

}
